

#ifndef _AbstractCommand_H_
#define _AbstractCommand_H_

#include "CoreApi.hpp"
#include "AbstractObject.hpp" 
#include <QObject>

namespace NSCore {

	class COREAPI AbstractCommand : 
		public QObject,
		public AbstractObject
	{
		Q_OBJECT
	public:
		AbstractCommand(QWidget* p = nullptr);
		virtual ~AbstractCommand();
		/*virtual*/
		virtual void execute() = 0;    // ִ������
		virtual void undo() = 0;       // ��������
		virtual void setExecuteDoc(QString _execute);
		virtual void setUndoDoc(QString _undo);

	public:
		inline QString className() override { return "AbstractCommand"; };
	protected:
		QString m_doc_execute{};
		QString m_doc_undo{};


	};


}

#endif